/**
 * 162. Find Peak Element
 * https://leetcode.com/problems/find-peak-element/
 */
class FindPeakElement{

    /**
     * 方法： findPeakElement
     * 逻辑: 使用二分查找法找到数组中的一个峰值元素。峰值元素是指其值大于左右相邻值的元素。
     * Args: 
     *   - nums: int[] - 输入的整数数组
     * Returns: 
     *   - int - 峰值元素的索引
     * Time:  
     *   - O(log n) - 二分查找的时间复杂度
     * Space:  
     *   - O(1) - 只使用了常数级别的额外空间
     */
    public int findPeakElement(int[] nums) {
        int left = -1;
        int right = nums.length - 1; //(-1, n-1)
        while(left+1 < right){
            int mid = (right + left) / 2;
            if(nums[mid] > nums[mid+1]){
                right = mid;
            }else{
                left = mid;
            }
        }
        return right;
    }
}